﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using docTissV2.Enumeradores;
using docTissV2.Classes.TreeNodeContents;
using AcessaDados = AcessaDadosBD;
using AcessaDadosBD.Repositorios;
using System.IO;

namespace docTissV2.Classes
{
    public class DadosGuia
    {
        #region Propriedades
        private string registroANS;
        public string RegistroANS
        {
            get { return registroANS; }
            set { registroANS = value; }
        }

        private string nomeOperadora;
        public string NomeOperadora
        {
            get { return nomeOperadora; }
            set { nomeOperadora = value; }
        }

        private Image logo;
        public Image Logo
        {
            get { return logo; }
            set { logo = value; }
        }

        private string nomeContratado;
        public string NomeContratado
        {
            get { return nomeContratado; }
            set { nomeContratado = value; }
        }

        private string tipoLogradouro;
        public string TipoLogradouro
        {
            get { return tipoLogradouro; }
            set { tipoLogradouro = value; }
        }

        private string logradouro;
        public string Logradouro
        {
            get { return logradouro; }
            set { logradouro = value; }
        }

        private string numero;
        public string Numero
        {
            get { return numero; }
            set { numero = value; }
        }

        private string complemento;
        public string Complemento
        {
            get { return complemento; }
            set { complemento = value; }
        }

        private string codigoIBGEMunicipio;
        public string CodigoIBGEMunicipio
        {
            get { return codigoIBGEMunicipio; }
            set { codigoIBGEMunicipio = value; }
        }

        private string municipio;
        public string Municipio
        {
            get { return municipio; }
            set { municipio = value; }
        }
        private string codigoUF;
        public string CodigoUF
        {
            get { return codigoUF; }
            set { codigoUF = value; }
        }
        private string cep;
        public string Cep
        {
            get { return cep; }
            set { cep = value; }
        }

        private TipoPrestador tipoPrestador;
        internal TipoPrestador TipoPrestador
        {
            get { return tipoPrestador; }
            set { tipoPrestador = value; }
        }
        private string codigoPrestadorNaOperadora;
        public string CodigoPrestadorNaOperadora
        {
            get { return codigoPrestadorNaOperadora; }
            set { codigoPrestadorNaOperadora = value; }
        }

        private string siglaConselho;
        public string SiglaConselho
        {
            get { return siglaConselho; }
            set { siglaConselho = value; }
        }

        private string numeroConselho;
        public string NumeroConselho
        {
            get { return numeroConselho; }
            set { numeroConselho = value; }
        }
        private string ufConselho;
        public string UFConselho
        {
            get { return ufConselho; }
            set { ufConselho = value; }
        }
        private string cpf_cnpj;
        public string CPF_CNPJ
        {
            get { return cpf_cnpj; }
            set { cpf_cnpj = value; }
        }
        private string cnes;
        public string CNES
        {
            get { return cnes; }
            set { cnes = value; }
        }
        private string cbos;
        public string CBOS
        {
            get { return cbos; }
            set { cbos = value; }
        }
        #endregion

        public DadosGuia(ConteudoNoGuia conteudoNoGuia)
        {
            AcessaDados.Operadora operadora = new OperadoraRepository(AddinUtils.Command).GetById(conteudoNoGuia.NoOperadora.RegistroANS);
            this.registroANS = operadora.RegistroANS;
            this.nomeOperadora = operadora.Nome;
            if (operadora.Logo != null)
                if ((operadora.Logo).Count() != 0)
                {
                    Stream strImg = new MemoryStream(operadora.Logo);
                    this.logo = new Bitmap(Image.FromStream(strImg), 83, 51);
                }

            AcessaDados.Prestador prestador = new PrestadorRepository(AddinUtils.Command).GetById(AddinUtils.UsuarioID);
            this.nomeContratado = prestador.Nome;
            this.tipoLogradouro = prestador.TipoLogradouro;
            this.logradouro = prestador.Logradouro;
            this.numero = prestador.Numero;
            this.complemento = prestador.Complemento;
            this.codigoIBGEMunicipio = prestador.CodigoIBGE;
            this.municipio = prestador.Municipio;
            this.codigoUF = prestador.CodigoUF;
            this.cep = prestador.CEP;
            if (AddinUtils.TipoPrestador == TipoPrestador.Profissional)
            {
                this.tipoPrestador = TipoPrestador.Profissional;

                AcessaDados.Profissional profissional = new ProfissionalRepository(AddinUtils.Command).GetById(prestador.ID);

                this.siglaConselho = profissional.SiglaConselho;
                this.numeroConselho = profissional.NumeroConselho;
                this.ufConselho = profissional.UFConselho;
                this.cbos = profissional.CBOS;
                //if (dr["codnaOperadora"].ToString() != "")
                this.codigoPrestadorNaOperadora = conteudoNoGuia.NoOperadora.CodigoNaOperadora;
                //else
                this.cpf_cnpj = profissional.CPF;
            }
            else
            {
                this.tipoPrestador = TipoPrestador.Hospital_Clinica;

                AcessaDados.ClinicaHospital clinicaHospital = new ClinicaHospitalRepository(AddinUtils.Command).GetById(prestador.ID);

                this.cnes = clinicaHospital.CNES;
                //if (dr["codnaOperadora"].ToString() != "")
                this.codigoPrestadorNaOperadora = conteudoNoGuia.NoOperadora.CodigoNaOperadora;
                //else
                this.cpf_cnpj = clinicaHospital.CNPJ;
            }
        }
    }
}
